package control

import (
	"fmt"
	"net"
	"project06/client/utils"
	"encoding/json"
	"project06/common/message"
	"os"
)

func ShowMenu(userId int){
	fmt.Printf("=========欢迎%d进入聊天系统============\n",userId)
	fmt.Println("         1、显示在线用户列表")
	fmt.Println("         2、发送消息")
	fmt.Println("         3、信息列表")
	fmt.Println("         4、退出系统")
	fmt.Println(" 请选择（1-4）")
	var key int
	var content string
	fmt.Scanln(&key)
	switch key{
		case 1:
			outputUserOnline()
		case 2:
			fmt.Println("请输入你要发送的群消息")
			fmt.Scanln(&content)
			smsControl:=&SmsControl{}
			smsControl.sendGroupMes(content)
		case 3:
			fmt.Println("显示信息列表")
		case 4:
			fmt.Println("退出客户端")
			os.Exit(0)
		default:
			fmt.Println("输入有误，请重新选择")
	}
}

func keepConnectServer(conn net.Conn){
	for{
		fmt.Println("客户端等待服务端发送消息")
		tf:=&utils.Transfer{
			Conn:conn,
		}
		mes,err:=tf.ReadPkg()
		if err!=nil{
			fmt.Println("tf.Read() err",err)
			return
		}
		switch mes.Type{
			case message.UserStatusNotifyMesType:
				//处理转发逻辑
				var userStatusNotifyMes message.UserStatusNotifyMes
				json.Unmarshal([]byte(mes.Data),&userStatusNotifyMes)
				updateUserStatus(userStatusNotifyMes)
			case message.SmsResMesType:
				var sms message.SmsResMes
				json.Unmarshal([]byte(mes.Data),&sms)
				outputGroupMes(&sms)
			default:
				fmt.Println("服务器返回暂时无法处理的消息")
		}
		//如果读取到消息，进行下一步逻辑
		//fmt.Println("mes=",mes)
	}
}